package com.probox.common.entity.service.centre;

import com.baomidou.mybatisplus.extension.service.IService;
import com.probox.common.entity.domain.centre.ProductCount;
import com.probox.common.entity.vo.centre.WarningDataVo;
import com.probox.common.entity.vo.centre.customer.CustomerQueryVo;
import com.probox.common.entity.vo.centre.order.OrderQueryVo;
import com.probox.common.entity.vo.centre.product.ProductDataVo;
import com.probox.common.entity.vo.centre.product.ProductInfoQuery;
import com.probox.common.entity.vo.centre.map.ProductAxisMap;

import java.util.Date;
import java.util.List;

/**
 * 商品数据汇总Service接口
 *
 *
 * @date 2021-06-08
 */
public interface IProductCountService extends IService<ProductCount> {


    /**
     * 查询商品数据汇总
     *
     * @param countUid 商品数据汇总ID
     * @return 商品数据汇总
     */
    public ProductCount selectProductCountById(Long countUid);


    /**
     * 查询商品数据汇总列表
     *
     * @param productCount 商品数据汇总
     * @return 商品数据汇总集合
     */
    public List<ProductCount> queryList(ProductCount productCount);


    /**
     * 新增商品数据汇总
     *
     * @param productCount 商品数据汇总
     * @return 结果
     */
    public boolean insertProductCount(ProductCount productCount);

    /**
     * 修改商品数据汇总
     *
     * @param productCount 商品数据汇总
     * @return 结果
     */
    public boolean updateProductCount(ProductCount productCount);

    public boolean deleteProductCountByIds(Long[] countUids);

    public ProductDataVo selectProductData(Date startTime, Date endTime);

    public ProductDataVo selectTodayProductData();

    ProductAxisMap getProductDataMap(String type);

    public ProductAxisMap getPaymentConversionRateSumMap(String type);

    public ProductAxisMap getProductDataRepurchaseRateMap(String type);

    List<ProductDataVo> productQueryList(ProductInfoQuery productInfo);

    public List<ProductDataVo> getRanking(ProductInfoQuery productInfo);

    WarningDataVo getProductWarningData(OrderQueryVo orderQueryVo);

    /**
     * 访客数
     * @return
     */
    public Integer selectVisitorsTotal(CustomerQueryVo customerQueryVo);


}
